package com.category.douyijia.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.category.douyijia.model.User;
import com.category.douyijia.services.UserService;
import com.jfinal.core.Controller;
import com.jfinal.core.NotAction;
import com.jfinal.core.Path;
/**
 * create the user controller.
 * it can control all user login account,
 * login password and control the user register account.
 * @author JunfengLiu
 * @version v1.0
 * the visit path: project_name + path + "/" + action.
 */
/*
 * 创建用户控制器。
 * 它可以控制所有用户登录账户，
 * 登录密码和控制用户注册代码。
 * @author 刘俊沣
 * @version v1.0
 * 访问页面路径：项目名称 + @Path中的路径 + "/" + action
 */
@Path("/user")
public class UserController extends Controller {
	/**
	 * create user dao in user service file.
	 */
	/*
	 * 创建用户在服务文件中的dao工具
	 */
	User user = UserService.userDao;
	/**
	 * create a not action method.
	 * and query all user message.
	 * @return
	 * return the all user message.
	 */
	/*
	 * 创建一个非action方法，
	 * 用于查询所有账户信息
	 * @return
	 * 返回所有账户信息
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	@NotAction
	public List<User> userAll(){
		return (ArrayList)user.findAll();
	}
	/**
	 * create the model to the web page.
	 * it keep a static model to user.
	 */
	/*
	 * 创建一个保存页面模板的方法，
	 * 用于保存页面静态模板。
	 */
	@NotAction
	private void keepModel(){
		//the default date type of string type.
		//创建一个保存多参数的模板，在不指定数据类型文件时默认为string类型
		keepPara("userId","userPassword","usetNickname");
		//specify data type is integer type.
		//创建一个参数模板，指定参数类型为整型
		keepPara(Integer.class, "userLoginIdent");
		//specify data type is string type.
		//创建一个多参数模板，指定参数类型为字符串
		keepPara(String.class,"userIdentity","userName");
		//specify the more data type is integer type.
		//创建一个多参数模板，指定参数类型为整型
		keepPara(Integer.class,"userAge","userSex");
		//specify the more data type is string type.
		//创建一个多参数模板，指定参数类型为字符串
		keepPara(String.class,"userEmail","userTel","userAddress");
		//specify data type is integer type.
		//创建一个参数模板，指定参数类型为整型
		keepPara(Integer.class,"userGroup");
		//specify data type is string type.
		//创建一个参数模板，指定参数类型为字符串
		keepPara(String.class,"userGroupAdmin");
		//specify the more data type is date type.
		//创建一个多参数模板，指定参数类型为日期
		keepPara(Date.class,"userBirthday","registerTime","prowerTime","endTime");
		//specify data type is string type.
		//创建一个参数模板，指定参数类型为字符串
		keepPara(String.class,"remark");
		//specify data type is integer type.
		//创建一个多参数模板，指定参数类型为整型
		keepPara(Integer.class,"userStatue");
	}
	/**
	 * create register java server page.
	 * and using the server provide model to
	 * generator a page.
	 */
	/*
	 * 创建一个注册java服务页面，
	 * 使用服务器端提供的模板生成页面。
	 */
	public void register(){
		keepModel();
		render("user_register.jsp");
	}
	/**
	 * if the user login success,
	 * the development user and
	 * administrator can visit it and change it.
	 */
	/*
	 * 如果用户登录成功，
	 * 开发者和管理员可以访问并修改页面信息。
	 */
	public void index(){
		render("user_index.jsp");
	}
	/**
	 * update a user's password to database
	 * if the user forget the password,
	 * the user can replace password.
	 * @param userId
	 * user login id.
	 * @param oldPassword
	 * user old password.
	 * @param newPassword
	 * @param reNewPassword
	 */
//	public void updatePassword(String userId
//								,String oldPassword
//								,String newPassword
//								,String reNewPassword){
//		User oldUser = null;
//	}
}